﻿'''
题目描述
有一个特异性的双端队列，该队列可以从头部或尾部添加数据，但是只能从头部移出数据。
小A依次执行2n个指令往队列中添加数据和移出数据。其中n个指令是添加数据（可能从头部添加、也可能从尾部添加），依次添加1到n；
n个指令是移出数据。
现在要求移除数据的顺序为1到n。
为了满足最后输出的要求，小A可以在任何时候调整队列中数据的顺序。
请问 小A 最少需要调整几次才能够满足移除数据的顺序正好是1到n。
输入描述
第一行一个数据n，表示数据的范围。
接下来的2n行，其中有n行为添加数据，指令为：
head add x表示从头部添加数据 x，
tail add x 表示从尾部添加数据x，
另外 n 行为移出数据指令，指令为：remove 的形式，表示移出1个数据；
1 ≤ n ≤ 3 * 10^5。
所有的数据均合法。
输出描述
一个整数，表示 小A 要调整的最小次数。
示例1
输入
5
head add 1
tail add 2
remove
head add 3
remove
tail add 4
head add 5
remove
remove
remove
输出
2
'''
#为了提高效率，引入双端队列deque(可以用列表模拟，但是数量太大影响效率)
from collections import deque

#读取输入
n = int(input())
oper_list = []  #存储指令的队列
for _ in range(2 * n):
    oper_list.append(input().split())
min_count = 0   #最少次数:注意调整一次是可以把队列数字调整任意顺序，即一次就有序
in_order = True #队列是否有序
oper_queue = deque()
#遍历指令队列，统计最少次数
for oper in oper_list:
    if oper[0] == 'head':   #头部添加
        if oper_queue and in_order: #如果非空且有序
            in_order = False
        oper_queue.appendleft(oper[2])  #不管是否有序都要加入队列
    elif oper[0] == 'tail': #尾部直接添加，因为有序
        oper_queue.append(oper[2])
    else:
        if not oper_queue:
            continue
        elif not in_order:  #无序
            min_count += 1
            in_order = True
        oper_queue.popleft()   #不管是否调整，都要移除队列
#输出结果
print(min_count)